<?php

/**
 * Валидатор равенства/неравенства строкового значения эталону.
 *
 */
class Kernel_Validator_Equals extends Kernel_Validator_Abstract {

    /**
     * Сообщение об ошибке, которое бросает валидатор.
     *
     * @var string
     */
    public $message = 'VALIDATION_ERROR_VALUE_DOESNT_MATCH';

    /**
     * Эталон, с которым сравнивается значение.
     *
     * @var string
     */
    public $value;

    /**
     * Флаг, обозначающий, что значение НЕ должно соответствовать эталону.
     *
     * @var boolean
     */
    public $not = false;

    /**
     * Проверяет правильность указанного значения
     *
     * @param   mixed   $value
     * @return  boolean
     */
    protected function _isValid($value) {
        return ($this->_clean($value) == $this->_clean($this->value)) ^ $this->not;
    }

    /**
     * Очищает строку от незначащих символов.
     *
     * @param   string  $value
     * @return  string
     */
    private function _clean($string) {
        return strtolower(preg_replace('/\s+/', ' ', $string));
    }
}
